# Definition for a binary tree node.
class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution:
    def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
        if not p and not q: return True
        if not p or not q: return False
        if p.val != q.val: return False
        return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)

if __name__ == '__main__':
    s = Solution()
    p = TreeNode(1)
    pleft, pright = TreeNode(2), TreeNode(3)
    p.left, p.right = pleft, pright
    q = TreeNode(1)
    qleft, qright = TreeNode(2), TreeNode(3)
    q.left, q.right = qleft, qright

    result = s.isSameTree(p, q)
    print(result)